A patch is an update to a software resource and generally includes code to be inserted or otherwise added to the code of a software binary. Patches may be deployed for a variety of reasons, such as to address security vulnerabilities, fix bugs, improve usability or performance, or add new features. Patching complex software systems may involve modifying large amounts of data across one or more software files, which may be a time-consuming process that leads to undesired service outages.
One approach to reduce downtime during patching operations is to clone the software system. According to this approach, the software files used to run software deployments are copied to another location. Patch updates may be applied to the cloned files while the deployments continue to run from the software binaries at the original location. The software deployments may then be migrated to run from the patched version of the software at the new location.
While cloning may reduce the downtime compared to in-place patching, cloning requires copying a large amount of data for large-scale systems. Consequently, this approach may significantly increase the storage overhead and amount of resources consumed during patching operations. Additionally, this approach still involves downtime to migrate the software deployments to the new location, which may be unacceptable for mission critical systems.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.